home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / pyshared / PIL / Hdf5StubImagePlugin.py < prev    next >
Text File  |  2006-12-03  |  2KB  |  71 lines

  1. #
  2. # The Python Imaging Library
  3. # $Id: Hdf5StubImagePlugin.py 2134 2004-10-06 08:55:20Z fredrik $
  4. #
  5. # HDF5 stub adapter
  6. #
  7. # Copyright (c) 2000-2003 by Fredrik Lundh
  8. #
  9. # See the README file for information on usage and redistribution.
  10. #
  11.  
  12. import Image, ImageFile
  13.  
  14. _handler = None
  15.  
  16. ##
  17. # Install application-specific HDF5 image handler.
  18. #
  19. # @param handler Handler object.
  20.  
  21. def register_handler(handler):
  22.     global _handler
  23.     _handler = handler
  24.  
  25. # --------------------------------------------------------------------
  26. # Image adapter
  27.  
  28. def _accept(prefix):
  29.     return prefix[:8] == "\x89HDF\r\n\x1a\n"
  30.  
  31. class HDF5StubImageFile(ImageFile.StubImageFile):
  32.  
  33.     format = "HDF5"
  34.     format_description = "HDF5"
  35.  
  36.     def _open(self):
  37.  
  38.         offset = self.fp.tell()
  39.  
  40.         if not _accept(self.fp.read(8)):
  41.             raise SyntaxError("Not an HDF file")
  42.  
  43.         self.fp.seek(offset)
  44.  
  45.         # make something up
  46.         self.mode = "F"
  47.         self.size = 1, 1
  48.  
  49.         loader = self._load()
  50.         if loader:
  51.             loader.open(self)
  52.  
  53.     def _load(self):
  54.         return _handler
  55.  
  56.  
  57. def _save(im, fp, filename):
  58.     if _handler is None or not hasattr("_handler", "save"):
  59.         raise IOError("HDF5 save handler not installed")
  60.     _handler.save(im, fp, filename)
  61.  
  62.  
  63. # --------------------------------------------------------------------
  64. # Registry
  65.  
  66. Image.register_open(HDF5StubImageFile.format, HDF5StubImageFile, _accept)
  67. Image.register_save(HDF5StubImageFile.format, _save)
  68.  
  69. Image.register_extension(HDF5StubImageFile.format, ".h5")
  70. Image.register_extension(HDF5StubImageFile.format, ".hdf")
  71.